package com.zl.cms.service;

import com.zl.basic.model.Pager;
import com.zl.cms.model.Group;
import com.zl.cms.model.Role;
import com.zl.cms.model.User;

import java.util.List;

/**
 * User: zl email:c3tc3tc3t@126.com Date: 14-1-15 Time: 下午8:08
 */
public interface IUserService {
  /**
   * 添加用户需要判断用户是否存在，如果存在就抛出异常
   * 
   * @param user 要添加的用户对象
   * @param rids 用户扮演的所有角色id
   * @param gids 用户所属的所有组id
   */
  public void add(User user, Integer[] rids, Integer[] gids);

  /**
   * 删除用户,需要把用户对应的角色关系和所属组关系删除,用户存在对应的文章不能删除
   * 
   * @param id 被删除的用户id
   */
  public void delete(int id);

  /**
   * 更新用户,
   * 
   * @param user 被更新的用户
   * @param rids rids的角色id,户已扮演了不做操作,没扮演就添加，用户原来扮演角色不存在rids中就删除这个角色和用户的关系
   * @param gids gids同上
   */
  public void update(User user, Integer[] rids, Integer[] gids);

  public void update(User user);

	/**
	 * 更新用户密码方法
	 * @param uid 用户id
	 * @param oldPwd 旧密码
	 * @param newPwd 新密码
	 */
	public void updatePwd(int uid,String oldPwd,String newPwd) ;

  /**
   * 更新用户状态
   * 
   * @param id 状态id
   */
  public void updateStatus(int id);

  /**
   * 列表用户
   */
  public Pager<User> findUser();

  /**
   * 查看用户信息
   * 
   * @param id 被查看用户id
   * @return 返回被查看用户对像
   */
  public User load(int id);

  /**
   * 获取用户所有角色信息
   * 
   * @param id 用户id
   * @return 一组角色信息
   */
  public List<Role> listUserRoles(int id);

  /**
   * 获取用户所有组信息
   * 
   * @param id 用户id
   * @return 一组组信息，
   */
  public List<Group> listUserGroups(int id);

  /**
   * 返回用户所扮演角色ids
   * 
   * @param id 用户id
   * @return id列表
   */
  public List<Integer> listUserRoleids(int id);

  /**
   * 返回用户所在所有组ids
   * 
   * @param id 用户id
   * @return 组id列表
   */
  public List<Integer> listUserGroupids(int id);

  /**
   * 获取组中的用户
   * 
   * @param gid 组id
   * @return 返回用户列表
   */
  public List<User> listGroupUsers(int gid);

  /**
   * 获取扮演角色的用户
   * 
   * @param rid 角色id
   * @return 返回用户列表
   */
  public List<User> listRoleUsers(int rid);

  /**
   * 判断用户登录
   * 
   * @param username 用户登录帐号
   * @param passowrd 用户密码
   */
  public User login(String username, String passowrd);
}
